package cl.usm.acceso.bean;

import java.util.ArrayList;
import java.util.List;

import javax.faces.component.html.HtmlDataTable;
import javax.faces.event.ActionEvent;
import javax.faces.event.ValueChangeEvent;
import javax.faces.model.SelectItem;

import cl.usm.acceso.dao.ClienteDAO;

public class RegistroClienteBean {

	private String rut;
	private String nombre;
	private String nombreCliente;
	private String apellido1;
	private String apellido2;	
	private String tipoCliente;
	private int numConvenio;
	private String domicilio;
	private String telefonoFijo;
	private String telefonoMovil;
	private List<ClienteBean> clientes;
	private ClienteBean cliente;
	private HtmlDataTable clienteTable;
	private String selectedItem;
	private String retorno;
	
	public String getRut() {
		return rut;
	}

	public void setRut(String rut) {
		this.rut = rut;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public String getApellido1() {
		return apellido1;
	}

	public void setApellido1(String apellido1) {
		this.apellido1 = apellido1;
	}

	public String getApellido2() {
		return apellido2;
	}

	public void setApellido2(String apellido2) {
		this.apellido2 = apellido2;
	}

	public String getNombreCliente() {
		return nombreCliente;
	}

	public void setNombreCliente(String nombreCliente) {
		this.nombreCliente = nombreCliente;
	}

	public String getTipoCliente() {
		return tipoCliente;
	}

	public void setTipoCliente(String tipoCliente) {
		this.tipoCliente = tipoCliente;
	}

	public int getNumConvenio() {
		return numConvenio;
	}

	public void setNumConvenio(int numConvenio) {
		this.numConvenio = numConvenio;
	}

	public String getDomicilio() {
		return domicilio;
	}

	public void setDomicilio(String domicilio) {
		this.domicilio = domicilio;
	}

	public String getTelefonoFijo() {
		return telefonoFijo;
	}

	public void setTelefonoFijo(String telefonoFijo) {
		this.telefonoFijo = telefonoFijo;
	}

	public String getTelefonoMovil() {
		return telefonoMovil;
	}

	public void setTelefonoMovil(String telefonoMovil) {
		this.telefonoMovil = telefonoMovil;
	}

	public List<ClienteBean> getClientes() {
		return clientes;
	}

	public void setClientes(List<ClienteBean> clientes) {
		this.clientes = clientes;
	}

	public ClienteBean getCliente() {
		return cliente;
	}

	public void setCliente(ClienteBean cliente) {
		this.cliente = cliente;
	}

	public HtmlDataTable getClienteTable() {
		return clienteTable;
	}

	public void setClienteTable(HtmlDataTable clienteTable) {
		this.clienteTable = clienteTable;
	}

	public String getRetorno() {
		return retorno;
	}

	public void setRetorno(String retorno) {
		this.retorno = retorno;
	}

	public void agregar(ActionEvent accion) {
		ClienteDAO cliente = new ClienteDAO();
		if (cliente.agregar(rut, nombre, apellido1, apellido2, tipoCliente, numConvenio, domicilio, telefonoFijo, telefonoMovil) == 1) {
			setRetorno("ok");
			rut = "";
			nombre = "";
			apellido1 = "";
			apellido2 = "";
			tipoCliente = "";
			numConvenio = 0;
			domicilio = "";
			telefonoFijo = "";
			telefonoMovil = "";
		} else {
			setRetorno("error");
		}
	}
	
	public void modificar(ActionEvent accion) {
		ClienteDAO cliente = new ClienteDAO();
		if (cliente.modificar(rut, nombre, apellido1, apellido2, tipoCliente, numConvenio, domicilio, telefonoFijo, telefonoMovil) == 1) {
			setRetorno("ok");
			rut = "";
			nombre = "";
			apellido1 = "";
			apellido2 = "";	
			tipoCliente = "";
			numConvenio = 0;
			domicilio = "";
			telefonoFijo = "";
			telefonoMovil = "";
		} else {
			setRetorno("error");
		}
	}
	
	public void eliminar(ActionEvent accion) {
		ClienteDAO cliente = new ClienteDAO();
		if (cliente.eliminar(rut, tipoCliente) == 1) {
			setRetorno("ok");
			rut = "";
			nombre = "";
			apellido1 = "";
			apellido2 = "";	
			tipoCliente = "";
			numConvenio = 0;
			domicilio = "";
			telefonoFijo = "";
			telefonoMovil = "";
		} else {
			setRetorno("error");
		}
	}
	
	public String eliminarCliente() {
		cliente = (ClienteBean) clienteTable.getRowData();
		rut = cliente.getRut();
		tipoCliente = cliente.getTipoCliente();
		
		ClienteDAO cliente = new ClienteDAO();
		if (cliente.eliminar(rut, tipoCliente) == 1) {
			rut = "";
			tipoCliente = "";
			return Integer.toString(1);			
		} else {
			return Integer.toString(0);
		}
		// return Integer.toString(idPrenda);
	}
	
	public String seleccionCliente() {
		cliente = (ClienteBean) clienteTable.getRowData();
		rut = cliente.getRut();
		nombre = cliente.getNombre();
		apellido1 = cliente.getApellido1();
		apellido2 = cliente.getApellido2();
		tipoCliente = cliente.getTipoCliente();
		numConvenio = cliente.getNumConvenio();
		domicilio = cliente.getDomicilio();
		telefonoFijo = cliente.getTelefonoFijo();
		telefonoMovil = cliente.getTelefonoMovil();
		return rut;
	}
	
	public List<ClienteBean> getListaClientes() {
		ClienteDAO cliente = new ClienteDAO();
		clientes = cliente.getListaClientes();
		System.out.println(clientes.toString());
		return clientes;
   }

	public String getSelectedItem() {   
	    /*if (selectedItem.equals("")) {   
	        selectedItem = ""; // This will be the default selected item.   
	    } */
		
	    rut = selectedItem;
	    return selectedItem;   
	}   
	    
	public void setSelectedItem(String selectedItem) {
		rut = selectedItem;
		this.selectedItem = selectedItem;   
	}   
	
	public List<SelectItem> getSelectItems() {
		ClienteDAO cliente = new ClienteDAO();
	    List<SelectItem> selectItems = new ArrayList<SelectItem>();   
		for (ClienteBean c : cliente.getListaClientes()) {
			selectItems.add(new SelectItem(c.getRut(), c.getNombre() + " " + c.getApellido1() + " " + c.getApellido2()));
		}
	    return selectItems;   
	}
	
	public void seleccionaCliente(ValueChangeEvent accion) {
		System.out.println("accion: " + accion.getNewValue());
		rut = (String) accion.getNewValue();
		// nombreCliente = clienteTablesetCpSeleccionado(cpSeleccionado);
	}

}
